package com.wangkang.eduservice.service;
import com.wangkang.eduservice.entity.EduCourse;
import com.wangkang.eduservice.entity.query.EduCourseQuery;
import com.wangkang.eduservice.entity.vo.EduCourseInfoVo;
import com.wangkang.eduservice.entity.vo.EduCoursePublishVo;
import com.wangkang.eduservice.entity.vo.EduCourseWebVo;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.Map;

/**
 * <p>
 * 课程 服务类
 * </p>
 *
 * @author wangkang
 * @since 2022-04-13
 */
public interface EduCourseService extends IService<EduCourse> {
    /**
     *  保存课程信息
     * @param courseInfoVo 课程信息
     * @return String 课程id
     */
    String saveCourseInfo(EduCourseInfoVo courseInfoVo);

    /**
     * 根据课程id 查询课程信息
     * @param courseId
     * @return
     */
    EduCourseInfoVo getCourseInfoByCourseId(String courseId);

    /**
     * 修改课程信息
     * @param courseInfoVo
     */
    void updateCourse(EduCourseInfoVo courseInfoVo);

    /**
     * 根据课程id查询课程确认信息
     * @param id 课程id
     * @return CoursePublishVo
     */
    EduCoursePublishVo publishCourseInfo(String id);

    /**
     * 根据课程id删除课程信息
     * @param courseId 课程id
     */
    void deleteCourse(String courseId);

    /**
     * 条件查询带分页查询课程
     * @param coursePage 分页对象
     * @param courseQuery 条件查询
     * @return 查询结果
     */
    Map<String, Object> getCourseFrontList(Page<EduCourse> coursePage, EduCourseQuery courseQuery);

    /**
     * 查询课程基本信息
     * @param courseId
     * @return
     */
    EduCourseWebVo getBaseCourseInfo(String courseId);
}